#!/bin/bash

#tests de programmes pour la repartition Zeitlin

mes_tests=(
#test2_population_10_11.txt
#states_11_52_2.txt
#test1_population_4_10.txt
#test2_population_10_11.txt
#test5_population_4_7.txt
#test7.txt
#test3_population_5_7bis.txt
#test4_population_5_2.txt
#test4_population_3_2.txt
#test4_population_3_3.txt
#test4_population_5_7.txt
#test6_population_10_11.txt
#test6_population_10_15.txt
#test7_population_10_15.txt
#test8_population_4_61.txt

# l-r_04_dept_07_sieges.txt
states_11_dept_52_sieges.txt
# states_20_dept_15_sieges.txt
test_03_dept_02_sieges.txt
# test_03_dept_03_sieges.txt
# test_04_dept_06_sieges.txt
# test_04_dept_07_sieges.txt
# test_04_dept_10_sieges.txt
# test_04_dept_61_sieges.txt
# test_05_dept_02_sieges.txt
# test_05_dept_07_sieges.txt
# test_08_dept_14_sieges.txt
test_10_dept_11_sieges.txt
# test_10_dept_15_sieges.txt
# test_10_dept_15_sieges_2.txt
# test_12_dept_21_sieges.txt
# test_16_dept_28_sieges.txt
# test_16_dept_28_sieges_2.txt
# test_16_dept_28_sieges_3.txt
# test_20_dept_35_sieges.txt
# test_20_dept_35_sieges_2.txt
test_24_dept_42_sieges.txt
#usa_50_dept_435_sieges.txt
);

mes_equipes=(
#AUBOIN_BIGUZZI
#RODRIGUEZ_SERVAJEAN
#BADSI_CHAPON
#AIGUILLON_AMADEOS
#ABDUL-WALI_KHOUDMI
#FERLET_ROLLAND
#AGIP_QUISPE
BOGE_LIU
#BALLIER_LARDEUR
#EL-ALLAKI_PARIS
#CHAILAN_JULLIEN
#JOUBERT_ROMAIN
# MAK_VALIMAHAMED_VIBERT
#GRILLOT_VALIERE
#PINCON_TAGHY
#DAMOISEAU_FLOUTIER
#KUETE_WOLLSCHEID
#MISEREZ_REVY
#AMRI_COUTURIER
#PIASCO_VIGROUX
#BENJELLOUN_THIAM
#HERLEMAN_PACALY
);

clear
dossier_actuel=$(pwd)

if [ $# -lt 1 -o $# -gt 2 ]
then	err=1
else	if [ $# -eq 2 -a $1 = "-compil" ]
	then	err=1
	else	if [ $1 = "-compil" ]
		then	err=0
		else	if [ $1 = "-run" ]
			then	if [ $# -eq 1 ]
				then	err=1
				else	if [ $2 != "-rep" -a $2 != "-trace" ]
					then	err=1
					else	err=0
					fi
				fi
			fi
		fi
	fi
fi

if [ $err -eq 1 ]
then	echo -e "\nUsage de ce programme : $0 -compil|-run [-rep|-trace]\n"
else	if [ $1 = "-compil" ]
	then	echo -e "\n----------- Lancement de la compilation -------------\n"
		# compilation de tous les projets
		compteur=0;
		for j in ${!mes_equipes[@]}
		do	if [ -d "$dossier_actuel/sources_equipes/${mes_equipes[$j]}" ]
			then	cd $dossier_actuel/sources_equipes/${mes_equipes[$j]}/
				if [ -f Makefile -o -f makefile ]
				then	make -s
					echo "- compilation du programme de l'equipe ${mes_equipes[$j]}"
				else	echo -e "\n- Erreur : makefile inexistant pour l'equipe ${mes_equipes[$j]}\n"
				fi
			else	echo -e "\n- Erreur : l'equipe ${mes_equipes[$j]} n'existe pas...\n"
				compteur=$(($compteur+1));
			fi
		done
		echo -e "\n------ Compilation terminee avec $compteur erreur(s) ------\n"
	else	if [ $1 = "-run" ]
		then	echo -e "\n----------- Execution des programmes -------------\n"
			compteur_erreurs_fichiers_tests=0;
			compteur_erreurs_equipes=0;
			
			for j in "${!mes_tests[@]}"
			do
				#pour chaque fichier test du tableau
				#echo ${mes_tests[$j]};
				compteur_erreurs_equipes=0;
				if [ -f $dossier_actuel/donnees/${mes_tests[$j]} ]
				then
					rm -fR $dossier_actuel/evaluation/${mes_tests[$j]}
					
					if [ -d $dossier_actuel/evaluation/${mes_tests[$j]} ]
					then
						#problme le dossier existe deja!!!
						echo "\n- Erreur : test avec le fichier ${mes_tests[$j]} deja fait...\n"
						compteur_erreurs_fichiers_tests=$(($compteur_erreurs_fichiers_tests+1));
					else
						#tout est normal on continue
						echo -e "\n- fichier test ${mes_tests[$j]}:\n"
						mkdir $dossier_actuel/evaluation/${mes_tests[$j]}
						
						for k in ${!mes_equipes[@]}
						do	if [ -d $dossier_actuel/sources_equipes/${mes_equipes[$k]} ]
							then	echo "- execution du programme de l'equipe ${mes_equipes[$k]}..."
								cd $dossier_actuel/sources_equipes/${mes_equipes[$k]}/
								#timer=$(date +%s)
								(time ./"${mes_equipes[$k]}" $2 $dossier_actuel/donnees/${mes_tests[$j]} > /dev/null) 2> temps.txt
								if [ -e $(ls -1 ${mes_equipes[$k]}*.txt | head -1) ]
								then	#timer=$(($(($(date +%s))) - $timer))
									echo "${mes_equipes[$k]}; $(cat "$dossier_actuel/sources_equipes/${mes_equipes[$k]}/temps.txt" | grep "real" | cut -f2)" >> "$dossier_actuel/evaluation/${mes_tests[$j]}/${mes_equipes[$k]}_temps_execution.txt"
									rm $dossier_actuel/sources_equipes/${mes_equipes[$k]}/temps.txt
									mv *.txt $dossier_actuel/evaluation/${mes_tests[$j]}
								else	echo -e "\n- Erreur : le programme de l'equipe ${mes_equipes[$k]} ne s'execute pas...\n"
									compteur_erreurs_equipes=$(($compteur_erreurs_equipes+1));
								fi
							else
								echo -e "\n- Erreur : l'equipe ${mes_equipes[$k]} n'existe pas...\n"
								compteur_erreurs_equipes=$(($compteur_erreurs_equipes+1));
							fi
						done
					fi
				else
					#le fichier test n’existe pas
					echo -e "\n- Erreur : fichier test ${mes_tests[$j]} inexistant..."
					compteur_erreurs_fichiers_tests=$(($compteur_erreurs_fichiers_tests+1));
				fi
			done
			echo -e "\n------------- Execution terminee -------------"
			echo "$compteur_erreurs_fichiers_tests erreur(s) de fichier(s) test"
			echo "$compteur_erreurs_equipes erreur(s) d'equipe(s)"
			echo -e "----------------------------------------------\n"
		fi
	fi
fi
